package leetCode;

import java.math.BigInteger;

/**
 * 1822. 数组元素积的符号
 * 循环
 已知函数signFunc(x) 将会根据 x 的正负返回特定值：

 如果 x 是正数，返回 1 。
 如果 x 是负数，返回 -1 。
 如果 x 是等于 0 ，返回 0 。
 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。
 返回 signFunc(product) 。

 示例 1：
 输入：nums = [-1,-2,-3,-4,3,2,1]
 输出：1
 解释：数组中所有值的乘积是 144 ，且 signFunc(144) = 1

 示例 2：
 输入：nums = [1,5,0,2,-3]
 输出：0
 解释：数组中所有值的乘积是 0 ，且 signFunc(0) = 0

 示例 3：
 输入：nums = [-1,1,-1,1,-1]
 输出：-1
 解释：数组中所有值的乘积是 -1 ，且 signFunc(-1) = -1

 提示：
 1 <= nums.length <= 1000
 -100 <= nums[i] <= 100
 */
public class ArraySign {
    public static void main(String[] args) {
        arraySign(new int[]{41,65,14,80,20,10,55,58,24,56,28,86,96,10,3,84,4,41,13,32,42,43,83,78,82,70,15,-41});
    }

    //不支持BigInteger，垃圾leetcode
    public static int arraySign(int[] nums) {
        BigInteger res = BigInteger.valueOf(1);
        for (int num : nums) {
            res = BigInteger.valueOf(num).multiply(res);
        }
        if (res.equals(0)) {
            return 0;
        }
        return res.compareTo(BigInteger.valueOf(0)) == 1 ? 1 : -1;
    }

    //判断符号，100/78
    public static int arraySign1(int[] nums) {
        int res = 0;
        for (int num : nums) {
            if (num == 0) {
                return 0;
            } else if (num < 0) {
                res++;
            }
        }
        return res % 2 == 0 ? 1 : -1;
    }
}
